package cc.wsyw126.java.nowcoder.sword_offer;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;

/**
 * Created by dp on 2017/4/19.
 * 如何得到一个数据流中的中位数？
 * 如果从数据流中读出奇数个数值，那么中位数就是所有数值排序之后位于中间的数值。
 * 如果从数据流中读出偶数个数值，那么中位数就是所有数值排序之后中间两个数的平均值。
 */
public class StreamMiddleNumber {
    private ArrayList<Integer> record = new ArrayList<>();
    public void Insert(Integer num) {
        record.add(num);
    }

    public Double GetMedian() {
        double result = 0.0;
        Collections.sort(record, Comparator.comparingInt(o -> o));
        int size = record.size();
        int i = size / 2;
        int i1 = size % 2;
        if (i1!=0) {
            result = record.get(i);
        }else {
            result =( record.get(i) + record.get(i - 1))/2.0;
        }
        return result;
    }
}
